﻿using Microsoft.Win32;
using MiniExcelLibs;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
using Sunny.UI;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace PanhuaWin.车间
{
    public partial class Form酸洗投入产出表 : UIPage
    {
        int 开始行;
        int 结束行;
       
        string FormWorkType = "酸洗";
        public Form酸洗投入产出表()
        {
            InitializeComponent();
        }

        private void uiButton查询_Click(object sender, EventArgs e)
        {
            string sql = @"update a set a.ProductSize=c.ProductSize
                            from 
                            Bus_PicklingOutput a,Bus_PlanPickling c
                            where 
                            a.VolumeCodeNew=c.VolumeCodeNew AND a.ProductSize =''";
            pub.ExecuteSql(pub.ConnectionString, sql);
            DataTable tb= ListData();
            uiDataGridView1.AutoGenerateColumns = false;
            this.uiDataGridView1.DataSource = tb;
            this.uiDataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
            this.uiDataGridView1.Refresh();

            for (int i = 0; i < this.uiDataGridView1.RowCount; i++)
            {
                if (this.uiDataGridView1.Rows[i].Cells["C产出等级"].Value.ToString() == "B")
                {
                    this.uiDataGridView1.Rows[i].Cells["C产出等级"].Style.BackColor = Color.FromArgb(255, 255, 128);
                }
                else if (this.uiDataGridView1.Rows[i].Cells["C产出等级"].Value.ToString() == "S")
                {
                    this.uiDataGridView1.Rows[i].Cells["C产出等级"].Style.BackColor = Color.FromArgb(255, 0, 0);
                }
            }
        }

        private  DataTable  ListData()
        {
            string sql;
            sql = "SELECT   row_number() over(order by 投入卷号) 序号, 投入卷号, 投入规格, 投入重量, 投入材质, 生产日期, 产出卷号, 产出规格, 产出材质, 产出重量, 产出等级, 去向, 产线名称, ";
            sql += " 班组名称, 班别,客户,成品规格,报工人,报工时间,产地 FROM      View_酸洗投入产出明细表 ";
            sql += " where 1=1  and 生产日期 >='" + this.uiDatePicker1.Value.ToString() + "'";
            sql += " and 生产日期 < '" + this.uiDatePicker2.Value.AddDays(1) + "'";
            string sql2 = "select isnull(sum(投入重量),0) ,isnull(sum(产出重量),0)  FROM      View_酸洗投入产出明细表 ";
            sql2 += " where 1=1  and 生产日期 >='" + this.uiDatePicker1.Value.ToString() + "'";
            sql2 += " and 生产日期 < '" + this.uiDatePicker2.Value.AddDays(1) + "'";

            if (uiTextBox投入卷号包含.Text != "")
            {
                sql += " and 投入卷号 like '%" + this.uiTextBox投入卷号包含.Text + "%'";
                sql2 += " and 投入卷号 like '%" + this.uiTextBox投入卷号包含.Text + "%'";
            }
            if (uiTextBox产出卷号包含.Text != "")
            {
                sql += " and 产出卷号 like '%" + this.uiTextBox产出卷号包含.Text + "%'";
                sql2 += " and 产出卷号 like '%" + this.uiTextBox产出卷号包含.Text + "%'";
            }
            if (this.uiComboBox查询产线.SelectedText != "全部")
            {
                sql += " and 产线名称='" + this.uiComboBox查询产线.SelectedText + "' ";
                sql2 += " and 产线名称='" + this.uiComboBox查询产线.SelectedText + "' ";
            }
            if (this.uiComboBox查询班组.SelectedText != "全部")
            {
                sql += " and 班组名称='" + this.uiComboBox查询班组.SelectedText + "' ";
                sql2 += " and 班组名称='" + this.uiComboBox查询班组.SelectedText + "' ";
            }
            if (this.uiComboBox查询等级.SelectedText != "全部")
            {
                sql += " and 产出等级='" + this.uiComboBox查询等级.SelectedText + "' ";
                sql2 += " and 产出等级='" + this.uiComboBox查询等级.SelectedText + "' ";
            }
            sql += " order by 投入卷号 ";
           

            DataTable tb = pub.GetDataTable(pub.ConnectionString, sql);
            DataTable tb2 = pub.GetDataTable(pub.ConnectionString, sql2);
            if (tb2.Rows.Count > 0)
            {
                this.uiTextBox投入重量合计.Text = tb2.Rows[0][0].ToString();
                this.uiTextBox产出重量合计.Text = pub.Todecimal(tb2.Rows[0][1].ToString(), 3);
                decimal 总投入重量 = pub.Todecimal(this.uiTextBox投入重量合计.Text);
                decimal 总产出重量 = pub.Todecimal(this.uiTextBox产出重量合计.Text);

                if (总投入重量 > 0)
                {
                    this.uiTextBox产出率.Text = Math.Round((pub.Todecimal(总产出重量 / 总投入重量) * 100), 2).ToString();
                }
                else
                {
                    this.uiTextBox产出率.Text = "";
                }
            }
            this.uiTextBox卷数.Text = tb.Rows.Count.ToString();

            return tb;
        }

        private void Form酸洗投入产出表_Load(object sender, EventArgs e)
        {
            pub.ListRankAll(pub.全局工厂编号, this.uiComboBox查询等级);
            this.uiDatePicker1.Value = DateTime.Today;
            this.uiDatePicker2.Value = DateTime.Today;
            pub.ListWorkLineAll(pub.全局工厂编号, FormWorkType, this.uiComboBox查询产线);
            pub.ListWorkTeamAll(pub.全局工厂编号, "酸洗二线", this.uiComboBox查询班组);
            pub.ListRankAll(pub.全局工厂编号, this.uiComboBox查询等级);


        }

        private void uiButton导出_Click(object sender, EventArgs e)
        {
            string path;
            DataTable tb = ListData();
            saveFileDialog1.Filter = "Excel文件 (*.XLSX)|*.XLSX";
            if (this.saveFileDialog1.ShowDialog(this) == DialogResult.OK)
            {
                path = this.saveFileDialog1.FileName;
                if (!File.Exists(path))
                {
                    MiniExcel.SaveAs(path, tb, true, "sheet1", ExcelType.XLSX);
                }
                else
                {
                    MessageBox.Show("文件已经存在,请重试!", "提示", MessageBoxButtons.OK);
                    return;
                }

            }
        }

        private void uiDataGridView1_CellMouseMove(object sender, DataGridViewCellMouseEventArgs e)
        {
               
        }

        private void uiDataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
        {
                开始行=e.RowIndex;
        }

        private void uiDataGridView1_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e)
        {
            decimal 总投入重量 = 0;
            decimal 投入重量 = 0;
            decimal 总产出重量 = 0;

            string guid = Guid.NewGuid().ToString();
            int 总卷数 = 0;
            结束行 = e.RowIndex;
            if (开始行 >= 0 && 结束行 > 0)
            {
                if (开始行 > 结束行)
                {
                    int k = 开始行;
                    开始行 = 结束行;
                    结束行 = k;
                }
                string sql = "delete Temp_投入汇总表 where guid='" + guid + "'";
                pub.ExecuteSql(pub.ConnectionString, sql, "delete Temp_投入汇总表 ");
                for (int i = 开始行; i <= 结束行; i++)
                {
                    投入重量 = pub.Todecimal(this.uiDataGridView1.Rows[i].Cells["C投入重量"].Value.ToString());
                    string 投入卷号 = this.uiDataGridView1.Rows[i].Cells["C投入卷号"].Value.ToString();
                    sql = " insert into Temp_投入汇总表 (guid, 卷号, 投入重量) ";
                    sql += " values('" + guid + "','" + 投入卷号 + "','" + 投入重量 + "')";
                    pub.ExecuteSql(pub.ConnectionString, sql, "insert into Temp_投入汇总表 ");

                    总产出重量 += pub.Todecimal(this.uiDataGridView1.Rows[i].Cells["C产出重量"].Value.ToString());
                    总卷数++;
                }
                sql = "select  isnull(  sum(t.投入重量),0)  from  (select distinct 卷号, 投入重量 from Temp_投入汇总表 where guid='" + guid + "' ) t ";
                DataTable tb = pub.GetDataTable(pub.ConnectionString, sql);
                if (tb.Rows.Count > 0)
                {
                    总投入重量 = pub.Todecimal(tb.Rows[0][0].ToString());
                }
                else
                {
                    总投入重量 = 0;
                }
                if (总投入重量 != 0)
                {
                    this.uiTextBox产出率.Text = Math.Round((pub.Todecimal(总产出重量 / 总投入重量) * 100), 2).ToString();
                }
                else
                {
                    this.uiTextBox产出率.Text = "";
                }
                this.uiTextBox卷数.Text = 总卷数.ToString();
                this.uiTextBox投入重量合计.Text = Math.Round(总投入重量, 3).ToString();
                this.uiTextBox产出重量合计.Text = Math.Round(总产出重量, 3).ToString();
            }

        }
    }
}                          
